<?php

/**
 * @copyright (C)2016-2099 Hnaoyun Inc.
 * @author XingMeng
 * @email hnxsh@foxmail.com
 * @date 2017年3月29日
 *  日志模型类
 */

namespace app\admin\model\system;

use core\basic\Model;
use app\admin\model\system\ConfigModel;

class BlacklogModel extends Model {

    // 获取日志列表
    public function getList() {
        return parent::table('ay_blacklog')->order('id DESC')
                        ->page()
                        ->select();
    }

    public function toBlack($id) {
        $status = get('status');
        $info = \core\basic\Db::table('ay_blacklog')->where("id = '{$id}'")->find();
        $ip = $info->user_ip;
        $old_value = \core\basic\Db::table('ay_config')->where("name = 'ip_deny'")->value('value');
        $value = post('ip');
        if ($status == 1) { //恢复
            if (empty($old_value)) {
                $value = '';
            } else {
                $old_value_arr = explode(',',trim($old_value, ','));
                $old_value_remain_arr = [];//最后剩下的ip
                foreach($old_value_arr as $old_ip){
                    if($old_ip == $value){
                        continue;
                    }
                    $old_value_remain_arr[]= $old_ip;
                }
                $value = implode(',', array_unique($old_value_remain_arr));
            }
        } else { //拉黑
            if (empty($old_value)) {
                $value = $value;
            } else {
                $value = trim($old_value, ',') . ',' . $value;
                $value = implode(',', array_unique(explode(',', $value)));
            }
        }
        $this->modDbIpDenyConfig($value);
        path_delete(RUN_PATH . '/config'); // 清理缓存的配置文件
        return parent::table('ay_blacklog')->where("user_ip = '{$ip}'")->update(['status' => $status]);
//        return parent::table('ay_blacklog')->where("user_ip = '{$ip}'")->delete();
    }

    // 删除全部
    public function clearLog() {
        return parent::table('ay_blacklog')->delete();
    }

    // 修改数据库ip_deny配置
    private function modDbIpDenyConfig($value) {
        $key = 'ip_deny';
        $config_model = new ConfigModel;

        // 数据分割处理
        $hander = array(
            'ip_deny',
        );
        if (in_array($key, $hander) && $value) {
            $value = str_replace("\r\n", ",", $value); // 替换回车
            $value = str_replace("，", ",", $value); // 替换中文逗号分割符
        }

        if ($config_model->checkConfig("name='$key'")) {
            $config_model->modValue($key, $value);
        } elseif ($key != 'submit' && $key != 'formcheck') {
            // 自动新增配置项
            $data = array(
                'name' => $key,
                'value' => $value,
                'type' => 2,
                'sorting' => 255,
                'description' => ''
            );
            $config_model->addConfig($data);
        }
    }

}
